package main

import (
	"bufio"
	"fmt"
	"go-learning-process/6.错误处理和资源管理/fib"
	"os"
)

func writeFile(fileName string) {
	file, err := os.OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)
	if err != nil {
		panic(err)
	}
	// 函数执行完关闭文件
	defer file.Close()

	// 将文件内容写进缓存
	writer := bufio.NewWriter(file)
	defer writer.Flush()

	f := fib.Feibonacci()
	for i := 0; i < 20; i++ {
		//  采用默认格式将其参数格式化并写入 w
		fmt.Fprintln(writer, f())
	}
}

func main() {
	// 将内容写入文件
	writeFile("fib.txt")

	// 对defer的使用
	fmt.Println("use defer")
	fmt.Println(1)
	defer fmt.Println(2)
	defer fmt.Println(3)
}

/**
总结：本节主要针对defer做详细说明，并且使用的案例为将斐波那契数列写进文件
关于defer是在函数执行结束后执行，如果有多个defer则是后进先出原则
*/
